//入口
import Vue from 'vue'
//导入路由的包
import VueRouter from 'vue-router'
//安装路由
Vue.use(VueRouter)
//导入vuex
import Vuex from 'vuex'

//使用vuex
Vue.use(Vuex)
//每次进入网站肯定会获取本地存储中的car数据
var car = JSON.parse(localStorage.getItem('car') || '[]')

//实例化vuex
var store = new Vuex.Store({
	state:{
		//this.$store.state.***
		car:car //购物车中的数据，用数组存储起来
	},
	mutations:{
		//this.$store.commit('方法的名称'，'按需传递)
		addToCat(state,goodsinfo){
			//点击加入购物车，把商品的信息保存带store中的car上
			//如果购物车中，之前就有了这个对应的商品。那么只需要更新数量
			//如果没有把商品数据pushd到car中即可
			
			
			//假设在购物车中没有找到对应的商品
			var flag = false
			
			state.car.some(item =>{
				if(item.id == goodsinfo.id){
					item.count += parseInt(goodsinfo.count)
					flag = true
					return true
				}
			})
			//如果最终循环完毕还是false则把所有数据push到car中
			
			if(!flag){
				state.car.push(goodsinfo)
			}
			
			//当更新car之后，把car数组，存储到本地的localStorage中、
			localStorage.setItem('car',JSON.stringify(state.car))
			
			
		},
		updateGoodsingo(state,goodsinfo){
			state.car.some(item =>{
				if(item.id == goodsinfo.id){
					item.count = parseInt(goodsinfo.count)
					return true
				}
			})
			//当修改完商品的数量，把最新的购物车数据保存到本地存储中
			localStorage.setItem('car',JSON.stringify(state.car))
		},
		removeFormCar(state,id){
			//根据id把store中购物车对应的商品删除
			state.car.some((item,i) =>{
				if(item.id == id){
					state.car.splice(i,1)
					return true
				}
			})
			localStorage.setItem('car',JSON.stringify(state.car))
		},
		updateselected(state,info){
			state.car.some(item =>{
				if(item.id == info.id){
				item.selected = info.selected
				}
			})
			localStorage.setItem('car',JSON.stringify(state.car))
		}

	},

	getters:{
		//this.$store.getters.***
		getAllCount(state){
			var c = 0
			state.car.forEach(item =>{
				c += item.count
			})
			return c
		},
		getGoodscount(state){
			var o ={}
			state.car.forEach(item =>{
				o[item.id]=item.count
				
			})
			return o
		},
		getGoodselect(state){
			var f ={}
			state.car.forEach(item =>{
				f[item.id] = item.selected
			})
			return f
		},
		getGoodsCountmount(state){
			var f ={
				count:0,
				amount:0
			}
			state.car.forEach(item =>{
				if(item.selected){
					f.count += item.count
					f.amount +=item.price * item.count
				}
				
			})
			return f
		}

		
		
		
	}
})

//导入路由模块
import router from './router.js'

import VueResource from 'vue-resource'
Vue.use(VueResource)
Vue.http.options.root="http://api.cms.liulongbin.top"
Vue.http.options.emulateJSON = true
//导入时间格式化插件
import moment from 'moment'
//定义全局过滤器
Vue.filter('dataFormat',function(dataStr,pattern = "YYYY-MM-DD HH:mm:ss"){
	return moment(dataStr).format(pattern)
})

//导入缩略图插件
import VuePreview from'vue-preview'
Vue.use(VuePreview) 


//按需导入
import app from './app.vue'
import './lib/mui/css/mui.css'
import './lib/mui/css/icons-extra.css'
/* import {Header,Swipe, SwipeItem,Button,Lazyload } from 'mint-ui'
Vue.component(Swipe.name, Swipe);
Vue.component(SwipeItem.name, SwipeItem)
Vue.component(Header.name,Header)
Vue.component(Button.name,Button)
Vue.use(Lazyload) */

import MintUI from 'mint-ui'
Vue.use(MintUI)
import 'mint-ui/lib/style.css'



var vm = new Vue({
	el:'#app',
	render:c => c(app),
	router, //挂载路由对象到Vue实例中
	store
})